FIG. 1 depicts simple network 100 that includes layer 2 Ethernet switches (or IEEE 802.1D bridges) 101, 102 and 103. According to the Spanning Tree Protocol (“STP”), one of the devices of network 100 (in this example, device 102) will be designated as the “root” according to various criteria. For example, a root device may be chosen because it is the closest to the center of a network.
According to STP, root device 102 is the root of a loop-less tree topology that spans all bridges in the network. This topology will not permit traffic to flow on certain links (e.g., link 104), in order to prevent loops and to allow the network devices to do the learning required for proper forwarding of packets. Information is passed between the bridges using the STP so that each bridge can independently decide which port(s) to block to form the tree topology. In this topology, bridge 103 will block its port 109 to break the loop—based on the fact that bridge 102 is the root bridge.
(Although these terms can have different meanings when used by those of skill in the art, the terms “packet” and “frame” will sometimes be used interchangeably herein.) For example, if no learning has yet taken place, when host A first sends frame 110 to host C, switch 101 will receive the frame from A and flood all non-blocked ports. When switch 102 receives frame 110 on port 107, switch 102 learns that A is in the direction of port 107 and will flood to all non-blocked ports except port 107. Similarly, switch 103 will receive frame 110 on port 108 and will learn that A is in the direction of port 108.
Although spanning tree protocol provides for the orderly flow of packets, it does not allow for all links in the network to be used. However, blocking links serves useful purposes. Looping is probably the biggest problem solved by blocking ports to create a tree topology. For example, if link 104 were not blocked, frames would loop both clockwise and counter-clockwise between devices 101, 102 and 103. If link 104 had not been blocked, switch 103 could receive frames from A on port 109 and would then learn that A is in the direction of 109. This change in learning would repeat and therefore frames would sometimes be forwarded to A via ports 108 and sometimes via port 109. Moreover, packets could arrive out of order, because later-transmitted packets could take a shorter path (link 104) and arrive before earlier-transmitted packets via links 105 and 106.
Moreover, current forwarding techniques require increasingly larger (and consequently more expensive) memories dedicated to forwarding tables. Referring again to FIG. 1, a blade server is attached to port 112: blade switch 115 has 16 attached blades 120, each of which acts as a server in this example. Each device in a network, including each blade in a blade server, has a globally unique 48-bit media access control (“MAC”) address. Blade servers are becoming increasingly common and are adding significant numbers of MAC addresses to a network.
Moreover, in the near future it may become commonplace for a single physical server to act as a plurality of virtual machines. In this example, each of servers 120 acts as 16 virtual machines and therefore each requires 16 MAC addresses. This makes a total of 256 MAC addresses that are required for the devices attached to blade switch 115, each of which will be sending and receiving frames via port 112. If switch 103 is a 256-port switch, it is conceivable that each port may have an attached device with a comparable number of MAC addresses. This means that over 65,000 (2562=65,536) MAC addresses could be associated with the ports of a single switch. If switches 101 and 103 each had over 65,000 associated MAC addresses, the forwarding table of root switch 102 would need to store over 130,000 48-bit MAC addresses merely for two switches. Therefore, as increasing numbers of physical and virtual devices are deployed in networks, forwarding tables are becoming larger and the associated storage devices are requiring greater capacity and becoming more expensive.
It would be desirable to address at least some shortcomings of the prior art. For example, it would be desirable to use the links that would ordinarily be blocked according to the spanning tree protocol. Moreover, it would be desirable to improve currently-deployed forwarding methods and devices so that smaller forwarding tables and associated memories can be deployed.